/**
 */
package ram_av.util;

import java.util.Map;

import org.eclipse.emf.common.util.EMap;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

import ram_av.AbstractMessageView;
import ram_av.Advice;
import ram_av.Aspect;
import ram_av.AspectMessageView;
import ram_av.Association;
import ram_av.AssociationEnd;
import ram_av.Attribute;
import ram_av.AttributeMapping;
import ram_av.Classifier;
import ram_av.ClassifierMapping;
import ram_av.CombinedFragment;
import ram_av.DestructionOccurrenceSpecification;
import ram_av.ExecutionStatement;
import ram_av.FragmentContainer;
import ram_av.Gate;
import ram_av.GlobalScope;
import ram_av.ImplementationClass;
import ram_av.Instantiation;
import ram_av.Interaction;
import ram_av.InteractionFragment;
import ram_av.InteractionOperand;
import ram_av.Layout;
import ram_av.LayoutElement;
import ram_av.Lifeline;
import ram_av.LiteralBoolean;
import ram_av.LiteralInteger;
import ram_av.LiteralSpecification;
import ram_av.LiteralString;
import ram_av.MappableElement;
import ram_av.Mapping;
import ram_av.Message;
import ram_av.MessageEnd;
import ram_av.MessageOccurrenceSpecification;
import ram_av.MessageView;
import ram_av.MessageViewReference;
import ram_av.NamedElement;
import ram_av.ObjectType;
import ram_av.OccurrenceSpecification;
import ram_av.OpaqueExpression;
import ram_av.Operation;
import ram_av.OperationMapping;
import ram_av.OriginalBehaviorExecution;
import ram_av.Parameter;
import ram_av.ParameterMapping;
import ram_av.ParameterValue;
import ram_av.ParameterValueMapping;
import ram_av.PerJoinPointScope;
import ram_av.PrimitiveType;
import ram_av.Property;
import ram_av.RAny;
import ram_av.RBoolean;
import ram_av.RChar;
import ram_av.RCollection;
import ram_av.REnum;
import ram_av.REnumLiteral;
import ram_av.RInt;
import ram_av.RList;
import ram_av.RSet;
import ram_av.RString;
import ram_av.RVoid;
import ram_av.Ram_avPackage;
import ram_av.Reference;
import ram_av.State;
import ram_av.StateMachine;
import ram_av.StateView;
import ram_av.StructuralFeature;
import ram_av.StructuralFeatureValue;
import ram_av.StructuralView;
import ram_av.TemporaryProperty;
import ram_av.Transition;
import ram_av.Type;
import ram_av.TypedElement;
import ram_av.ValueSpecification;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see ram_av.Ram_avPackage
 * @generated
 */
public class Ram_avSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static Ram_avPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public Ram_avSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = Ram_avPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case Ram_avPackage.ASPECT:
      {
        Aspect aspect = (Aspect)theEObject;
        T result = caseAspect(aspect);
        if (result == null) result = caseNamedElement(aspect);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.MAPPABLE_ELEMENT:
      {
        MappableElement mappableElement = (MappableElement)theEObject;
        T result = caseMappableElement(mappableElement);
        if (result == null) result = caseNamedElement(mappableElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.STRUCTURAL_VIEW:
      {
        StructuralView structuralView = (StructuralView)theEObject;
        T result = caseStructuralView(structuralView);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.CLASS:
      {
        ram_av.Class class_ = (ram_av.Class)theEObject;
        T result = caseClass(class_);
        if (result == null) result = caseClassifier(class_);
        if (result == null) result = caseObjectType(class_);
        if (result == null) result = caseType(class_);
        if (result == null) result = caseMappableElement(class_);
        if (result == null) result = caseNamedElement(class_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ASSOCIATION_END:
      {
        AssociationEnd associationEnd = (AssociationEnd)theEObject;
        T result = caseAssociationEnd(associationEnd);
        if (result == null) result = caseProperty(associationEnd);
        if (result == null) result = caseStructuralFeature(associationEnd);
        if (result == null) result = caseTypedElement(associationEnd);
        if (result == null) result = caseNamedElement(associationEnd);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ASSOCIATION:
      {
        Association association = (Association)theEObject;
        T result = caseAssociation(association);
        if (result == null) result = caseNamedElement(association);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.NAMED_ELEMENT:
      {
        NamedElement namedElement = (NamedElement)theEObject;
        T result = caseNamedElement(namedElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.INSTANTIATION:
      {
        Instantiation instantiation = (Instantiation)theEObject;
        T result = caseInstantiation(instantiation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.MAPPING:
      {
        Mapping mapping = (Mapping)theEObject;
        T result = caseMapping(mapping);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.OPERATION:
      {
        Operation operation = (Operation)theEObject;
        T result = caseOperation(operation);
        if (result == null) result = caseMappableElement(operation);
        if (result == null) result = caseNamedElement(operation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ATTRIBUTE:
      {
        Attribute attribute = (Attribute)theEObject;
        T result = caseAttribute(attribute);
        if (result == null) result = caseStructuralFeature(attribute);
        if (result == null) result = caseTemporaryProperty(attribute);
        if (result == null) result = caseMappableElement(attribute);
        if (result == null) result = caseTypedElement(attribute);
        if (result == null) result = caseNamedElement(attribute);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.TYPE:
      {
        Type type = (Type)theEObject;
        T result = caseType(type);
        if (result == null) result = caseNamedElement(type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.PARAMETER:
      {
        Parameter parameter = (Parameter)theEObject;
        T result = caseParameter(parameter);
        if (result == null) result = caseTypedElement(parameter);
        if (result == null) result = caseMappableElement(parameter);
        if (result == null) result = caseNamedElement(parameter);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.PRIMITIVE_TYPE:
      {
        PrimitiveType primitiveType = (PrimitiveType)theEObject;
        T result = casePrimitiveType(primitiveType);
        if (result == null) result = caseImplementationClass(primitiveType);
        if (result == null) result = caseClassifier(primitiveType);
        if (result == null) result = caseObjectType(primitiveType);
        if (result == null) result = caseType(primitiveType);
        if (result == null) result = caseMappableElement(primitiveType);
        if (result == null) result = caseNamedElement(primitiveType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.OBJECT_TYPE:
      {
        ObjectType objectType = (ObjectType)theEObject;
        T result = caseObjectType(objectType);
        if (result == null) result = caseType(objectType);
        if (result == null) result = caseMappableElement(objectType);
        if (result == null) result = caseNamedElement(objectType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RVOID:
      {
        RVoid rVoid = (RVoid)theEObject;
        T result = caseRVoid(rVoid);
        if (result == null) result = caseType(rVoid);
        if (result == null) result = caseNamedElement(rVoid);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RBOOLEAN:
      {
        RBoolean rBoolean = (RBoolean)theEObject;
        T result = caseRBoolean(rBoolean);
        if (result == null) result = casePrimitiveType(rBoolean);
        if (result == null) result = caseImplementationClass(rBoolean);
        if (result == null) result = caseClassifier(rBoolean);
        if (result == null) result = caseObjectType(rBoolean);
        if (result == null) result = caseType(rBoolean);
        if (result == null) result = caseMappableElement(rBoolean);
        if (result == null) result = caseNamedElement(rBoolean);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RINT:
      {
        RInt rInt = (RInt)theEObject;
        T result = caseRInt(rInt);
        if (result == null) result = casePrimitiveType(rInt);
        if (result == null) result = caseImplementationClass(rInt);
        if (result == null) result = caseClassifier(rInt);
        if (result == null) result = caseObjectType(rInt);
        if (result == null) result = caseType(rInt);
        if (result == null) result = caseMappableElement(rInt);
        if (result == null) result = caseNamedElement(rInt);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RCHAR:
      {
        RChar rChar = (RChar)theEObject;
        T result = caseRChar(rChar);
        if (result == null) result = casePrimitiveType(rChar);
        if (result == null) result = caseImplementationClass(rChar);
        if (result == null) result = caseClassifier(rChar);
        if (result == null) result = caseObjectType(rChar);
        if (result == null) result = caseType(rChar);
        if (result == null) result = caseMappableElement(rChar);
        if (result == null) result = caseNamedElement(rChar);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RSTRING:
      {
        RString rString = (RString)theEObject;
        T result = caseRString(rString);
        if (result == null) result = casePrimitiveType(rString);
        if (result == null) result = caseImplementationClass(rString);
        if (result == null) result = caseClassifier(rString);
        if (result == null) result = caseObjectType(rString);
        if (result == null) result = caseType(rString);
        if (result == null) result = caseMappableElement(rString);
        if (result == null) result = caseNamedElement(rString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RANY:
      {
        RAny rAny = (RAny)theEObject;
        T result = caseRAny(rAny);
        if (result == null) result = caseType(rAny);
        if (result == null) result = caseNamedElement(rAny);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RENUM:
      {
        REnum rEnum = (REnum)theEObject;
        T result = caseREnum(rEnum);
        if (result == null) result = casePrimitiveType(rEnum);
        if (result == null) result = caseImplementationClass(rEnum);
        if (result == null) result = caseClassifier(rEnum);
        if (result == null) result = caseObjectType(rEnum);
        if (result == null) result = caseType(rEnum);
        if (result == null) result = caseMappableElement(rEnum);
        if (result == null) result = caseNamedElement(rEnum);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RENUM_LITERAL:
      {
        REnumLiteral rEnumLiteral = (REnumLiteral)theEObject;
        T result = caseREnumLiteral(rEnumLiteral);
        if (result == null) result = caseNamedElement(rEnumLiteral);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ABSTRACT_MESSAGE_VIEW:
      {
        AbstractMessageView abstractMessageView = (AbstractMessageView)theEObject;
        T result = caseAbstractMessageView(abstractMessageView);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.MESSAGE_VIEW:
      {
        MessageView messageView = (MessageView)theEObject;
        T result = caseMessageView(messageView);
        if (result == null) result = caseAbstractMessageView(messageView);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.MESSAGE_VIEW_REFERENCE:
      {
        MessageViewReference messageViewReference = (MessageViewReference)theEObject;
        T result = caseMessageViewReference(messageViewReference);
        if (result == null) result = caseAbstractMessageView(messageViewReference);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.INTERACTION:
      {
        Interaction interaction = (Interaction)theEObject;
        T result = caseInteraction(interaction);
        if (result == null) result = caseFragmentContainer(interaction);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ASPECT_MESSAGE_VIEW:
      {
        AspectMessageView aspectMessageView = (AspectMessageView)theEObject;
        T result = caseAspectMessageView(aspectMessageView);
        if (result == null) result = caseAbstractMessageView(aspectMessageView);
        if (result == null) result = caseNamedElement(aspectMessageView);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.LIFELINE:
      {
        Lifeline lifeline = (Lifeline)theEObject;
        T result = caseLifeline(lifeline);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.MESSAGE:
      {
        Message message = (Message)theEObject;
        T result = caseMessage(message);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.MESSAGE_END:
      {
        MessageEnd messageEnd = (MessageEnd)theEObject;
        T result = caseMessageEnd(messageEnd);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.MESSAGE_OCCURRENCE_SPECIFICATION:
      {
        MessageOccurrenceSpecification messageOccurrenceSpecification = (MessageOccurrenceSpecification)theEObject;
        T result = caseMessageOccurrenceSpecification(messageOccurrenceSpecification);
        if (result == null) result = caseOccurrenceSpecification(messageOccurrenceSpecification);
        if (result == null) result = caseMessageEnd(messageOccurrenceSpecification);
        if (result == null) result = caseInteractionFragment(messageOccurrenceSpecification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.OCCURRENCE_SPECIFICATION:
      {
        OccurrenceSpecification occurrenceSpecification = (OccurrenceSpecification)theEObject;
        T result = caseOccurrenceSpecification(occurrenceSpecification);
        if (result == null) result = caseInteractionFragment(occurrenceSpecification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.DESTRUCTION_OCCURRENCE_SPECIFICATION:
      {
        DestructionOccurrenceSpecification destructionOccurrenceSpecification = (DestructionOccurrenceSpecification)theEObject;
        T result = caseDestructionOccurrenceSpecification(destructionOccurrenceSpecification);
        if (result == null) result = caseMessageOccurrenceSpecification(destructionOccurrenceSpecification);
        if (result == null) result = caseOccurrenceSpecification(destructionOccurrenceSpecification);
        if (result == null) result = caseMessageEnd(destructionOccurrenceSpecification);
        if (result == null) result = caseInteractionFragment(destructionOccurrenceSpecification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.INTERACTION_FRAGMENT:
      {
        InteractionFragment interactionFragment = (InteractionFragment)theEObject;
        T result = caseInteractionFragment(interactionFragment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.COMBINED_FRAGMENT:
      {
        CombinedFragment combinedFragment = (CombinedFragment)theEObject;
        T result = caseCombinedFragment(combinedFragment);
        if (result == null) result = caseInteractionFragment(combinedFragment);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ORIGINAL_BEHAVIOR_EXECUTION:
      {
        OriginalBehaviorExecution originalBehaviorExecution = (OriginalBehaviorExecution)theEObject;
        T result = caseOriginalBehaviorExecution(originalBehaviorExecution);
        if (result == null) result = caseInteractionFragment(originalBehaviorExecution);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.EXECUTION_STATEMENT:
      {
        ExecutionStatement executionStatement = (ExecutionStatement)theEObject;
        T result = caseExecutionStatement(executionStatement);
        if (result == null) result = caseInteractionFragment(executionStatement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.INTERACTION_OPERAND:
      {
        InteractionOperand interactionOperand = (InteractionOperand)theEObject;
        T result = caseInteractionOperand(interactionOperand);
        if (result == null) result = caseFragmentContainer(interactionOperand);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.VALUE_SPECIFICATION:
      {
        ValueSpecification valueSpecification = (ValueSpecification)theEObject;
        T result = caseValueSpecification(valueSpecification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.STRUCTURAL_FEATURE_VALUE:
      {
        StructuralFeatureValue structuralFeatureValue = (StructuralFeatureValue)theEObject;
        T result = caseStructuralFeatureValue(structuralFeatureValue);
        if (result == null) result = caseValueSpecification(structuralFeatureValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.PARAMETER_VALUE_MAPPING:
      {
        ParameterValueMapping parameterValueMapping = (ParameterValueMapping)theEObject;
        T result = caseParameterValueMapping(parameterValueMapping);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.PARAMETER_VALUE:
      {
        ParameterValue parameterValue = (ParameterValue)theEObject;
        T result = caseParameterValue(parameterValue);
        if (result == null) result = caseValueSpecification(parameterValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.OPAQUE_EXPRESSION:
      {
        OpaqueExpression opaqueExpression = (OpaqueExpression)theEObject;
        T result = caseOpaqueExpression(opaqueExpression);
        if (result == null) result = caseValueSpecification(opaqueExpression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.LITERAL_SPECIFICATION:
      {
        LiteralSpecification literalSpecification = (LiteralSpecification)theEObject;
        T result = caseLiteralSpecification(literalSpecification);
        if (result == null) result = caseValueSpecification(literalSpecification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.LITERAL_STRING:
      {
        LiteralString literalString = (LiteralString)theEObject;
        T result = caseLiteralString(literalString);
        if (result == null) result = caseLiteralSpecification(literalString);
        if (result == null) result = caseValueSpecification(literalString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.LITERAL_INTEGER:
      {
        LiteralInteger literalInteger = (LiteralInteger)theEObject;
        T result = caseLiteralInteger(literalInteger);
        if (result == null) result = caseLiteralSpecification(literalInteger);
        if (result == null) result = caseValueSpecification(literalInteger);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.FRAGMENT_CONTAINER:
      {
        FragmentContainer fragmentContainer = (FragmentContainer)theEObject;
        T result = caseFragmentContainer(fragmentContainer);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RCOLLECTION:
      {
        RCollection rCollection = (RCollection)theEObject;
        T result = caseRCollection(rCollection);
        if (result == null) result = caseImplementationClass(rCollection);
        if (result == null) result = caseClassifier(rCollection);
        if (result == null) result = caseObjectType(rCollection);
        if (result == null) result = caseType(rCollection);
        if (result == null) result = caseMappableElement(rCollection);
        if (result == null) result = caseNamedElement(rCollection);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RSET:
      {
        RSet rSet = (RSet)theEObject;
        T result = caseRSet(rSet);
        if (result == null) result = caseRCollection(rSet);
        if (result == null) result = caseImplementationClass(rSet);
        if (result == null) result = caseClassifier(rSet);
        if (result == null) result = caseObjectType(rSet);
        if (result == null) result = caseType(rSet);
        if (result == null) result = caseMappableElement(rSet);
        if (result == null) result = caseNamedElement(rSet);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.RLIST:
      {
        RList rList = (RList)theEObject;
        T result = caseRList(rList);
        if (result == null) result = caseRCollection(rList);
        if (result == null) result = caseImplementationClass(rList);
        if (result == null) result = caseClassifier(rList);
        if (result == null) result = caseObjectType(rList);
        if (result == null) result = caseType(rList);
        if (result == null) result = caseMappableElement(rList);
        if (result == null) result = caseNamedElement(rList);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.LAYOUT:
      {
        Layout layout = (Layout)theEObject;
        T result = caseLayout(layout);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.CONTAINER_MAP:
      {
        @SuppressWarnings("unchecked") Map.Entry<EObject, EMap<EObject, LayoutElement>> containerMap = (Map.Entry<EObject, EMap<EObject, LayoutElement>>)theEObject;
        T result = caseContainerMap(containerMap);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ELEMENT_MAP:
      {
        @SuppressWarnings("unchecked") Map.Entry<EObject, LayoutElement> elementMap = (Map.Entry<EObject, LayoutElement>)theEObject;
        T result = caseElementMap(elementMap);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.LAYOUT_ELEMENT:
      {
        LayoutElement layoutElement = (LayoutElement)theEObject;
        T result = caseLayoutElement(layoutElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.CLASSIFIER:
      {
        Classifier classifier = (Classifier)theEObject;
        T result = caseClassifier(classifier);
        if (result == null) result = caseObjectType(classifier);
        if (result == null) result = caseType(classifier);
        if (result == null) result = caseMappableElement(classifier);
        if (result == null) result = caseNamedElement(classifier);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.IMPLEMENTATION_CLASS:
      {
        ImplementationClass implementationClass = (ImplementationClass)theEObject;
        T result = caseImplementationClass(implementationClass);
        if (result == null) result = caseClassifier(implementationClass);
        if (result == null) result = caseObjectType(implementationClass);
        if (result == null) result = caseType(implementationClass);
        if (result == null) result = caseMappableElement(implementationClass);
        if (result == null) result = caseNamedElement(implementationClass);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.TEMPORARY_PROPERTY:
      {
        TemporaryProperty temporaryProperty = (TemporaryProperty)theEObject;
        T result = caseTemporaryProperty(temporaryProperty);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.STRUCTURAL_FEATURE:
      {
        StructuralFeature structuralFeature = (StructuralFeature)theEObject;
        T result = caseStructuralFeature(structuralFeature);
        if (result == null) result = caseTypedElement(structuralFeature);
        if (result == null) result = caseNamedElement(structuralFeature);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.REFERENCE:
      {
        Reference reference = (Reference)theEObject;
        T result = caseReference(reference);
        if (result == null) result = caseProperty(reference);
        if (result == null) result = caseTemporaryProperty(reference);
        if (result == null) result = caseStructuralFeature(reference);
        if (result == null) result = caseTypedElement(reference);
        if (result == null) result = caseNamedElement(reference);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.PROPERTY:
      {
        Property property = (Property)theEObject;
        T result = caseProperty(property);
        if (result == null) result = caseStructuralFeature(property);
        if (result == null) result = caseTypedElement(property);
        if (result == null) result = caseNamedElement(property);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.TYPED_ELEMENT:
      {
        TypedElement typedElement = (TypedElement)theEObject;
        T result = caseTypedElement(typedElement);
        if (result == null) result = caseNamedElement(typedElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.GATE:
      {
        Gate gate = (Gate)theEObject;
        T result = caseGate(gate);
        if (result == null) result = caseMessageEnd(gate);
        if (result == null) result = caseNamedElement(gate);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.LITERAL_BOOLEAN:
      {
        LiteralBoolean literalBoolean = (LiteralBoolean)theEObject;
        T result = caseLiteralBoolean(literalBoolean);
        if (result == null) result = caseLiteralSpecification(literalBoolean);
        if (result == null) result = caseValueSpecification(literalBoolean);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.CLASSIFIER_MAPPING:
      {
        ClassifierMapping classifierMapping = (ClassifierMapping)theEObject;
        T result = caseClassifierMapping(classifierMapping);
        if (result == null) result = caseMapping(classifierMapping);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ATTRIBUTE_MAPPING:
      {
        AttributeMapping attributeMapping = (AttributeMapping)theEObject;
        T result = caseAttributeMapping(attributeMapping);
        if (result == null) result = caseMapping(attributeMapping);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.OPERATION_MAPPING:
      {
        OperationMapping operationMapping = (OperationMapping)theEObject;
        T result = caseOperationMapping(operationMapping);
        if (result == null) result = caseMapping(operationMapping);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.PARAMETER_MAPPING:
      {
        ParameterMapping parameterMapping = (ParameterMapping)theEObject;
        T result = caseParameterMapping(parameterMapping);
        if (result == null) result = caseMapping(parameterMapping);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.STATE_VIEW:
      {
        StateView stateView = (StateView)theEObject;
        T result = caseStateView(stateView);
        if (result == null) result = caseNamedElement(stateView);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.STATE_MACHINE:
      {
        StateMachine stateMachine = (StateMachine)theEObject;
        T result = caseStateMachine(stateMachine);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.TRANSITION:
      {
        Transition transition = (Transition)theEObject;
        T result = caseTransition(transition);
        if (result == null) result = caseNamedElement(transition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.STATE:
      {
        State state = (State)theEObject;
        T result = caseState(state);
        if (result == null) result = caseNamedElement(state);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.ADVICE:
      {
        Advice advice = (Advice)theEObject;
        T result = caseAdvice(advice);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.GLOBAL_SCOPE:
      {
        GlobalScope globalScope = (GlobalScope)theEObject;
        T result = caseGlobalScope(globalScope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case Ram_avPackage.PER_JOIN_POINT_SCOPE:
      {
        PerJoinPointScope perJoinPointScope = (PerJoinPointScope)theEObject;
        T result = casePerJoinPointScope(perJoinPointScope);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Aspect</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Aspect</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAspect(Aspect object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Mappable Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Mappable Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMappableElement(MappableElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Structural View</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Structural View</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStructuralView(StructuralView object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Class</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Class</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseClass(ram_av.Class object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Association End</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Association End</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAssociationEnd(AssociationEnd object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Association</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Association</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAssociation(Association object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamedElement(NamedElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Instantiation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Instantiation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInstantiation(Instantiation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Mapping</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Mapping</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMapping(Mapping object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Operation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Operation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOperation(Operation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attribute</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attribute</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttribute(Attribute object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseType(Type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Parameter</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Parameter</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParameter(Parameter object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Primitive Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Primitive Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePrimitiveType(PrimitiveType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Object Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Object Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseObjectType(ObjectType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RVoid</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RVoid</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRVoid(RVoid object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RBoolean</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RBoolean</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRBoolean(RBoolean object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RInt</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RInt</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRInt(RInt object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RChar</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RChar</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRChar(RChar object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RString</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RString</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRString(RString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RAny</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RAny</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRAny(RAny object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>REnum</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>REnum</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseREnum(REnum object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>REnum Literal</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>REnum Literal</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseREnumLiteral(REnumLiteral object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Abstract Message View</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Abstract Message View</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAbstractMessageView(AbstractMessageView object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Message View</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Message View</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMessageView(MessageView object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Message View Reference</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Message View Reference</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMessageViewReference(MessageViewReference object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Interaction</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Interaction</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInteraction(Interaction object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Aspect Message View</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Aspect Message View</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAspectMessageView(AspectMessageView object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Lifeline</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Lifeline</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLifeline(Lifeline object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Message</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Message</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMessage(Message object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Message End</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Message End</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMessageEnd(MessageEnd object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Message Occurrence Specification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Message Occurrence Specification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMessageOccurrenceSpecification(MessageOccurrenceSpecification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Occurrence Specification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Occurrence Specification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOccurrenceSpecification(OccurrenceSpecification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Destruction Occurrence Specification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Destruction Occurrence Specification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDestructionOccurrenceSpecification(DestructionOccurrenceSpecification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Interaction Fragment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Interaction Fragment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInteractionFragment(InteractionFragment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Combined Fragment</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Combined Fragment</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCombinedFragment(CombinedFragment object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Original Behavior Execution</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Original Behavior Execution</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOriginalBehaviorExecution(OriginalBehaviorExecution object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Execution Statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Execution Statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseExecutionStatement(ExecutionStatement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Interaction Operand</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Interaction Operand</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInteractionOperand(InteractionOperand object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Value Specification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Value Specification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseValueSpecification(ValueSpecification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Structural Feature Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Structural Feature Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStructuralFeatureValue(StructuralFeatureValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Parameter Value Mapping</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Parameter Value Mapping</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParameterValueMapping(ParameterValueMapping object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Parameter Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Parameter Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParameterValue(ParameterValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Opaque Expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Opaque Expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOpaqueExpression(OpaqueExpression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Literal Specification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Literal Specification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLiteralSpecification(LiteralSpecification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Literal String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Literal String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLiteralString(LiteralString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Literal Integer</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Literal Integer</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLiteralInteger(LiteralInteger object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Fragment Container</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Fragment Container</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFragmentContainer(FragmentContainer object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RCollection</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RCollection</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRCollection(RCollection object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RSet</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RSet</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRSet(RSet object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>RList</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>RList</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRList(RList object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Layout</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Layout</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLayout(Layout object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Container Map</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Container Map</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContainerMap(Map.Entry<EObject, EMap<EObject, LayoutElement>> object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Element Map</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Element Map</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseElementMap(Map.Entry<EObject, LayoutElement> object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Layout Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Layout Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLayoutElement(LayoutElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Classifier</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Classifier</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseClassifier(Classifier object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Implementation Class</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Implementation Class</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseImplementationClass(ImplementationClass object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Temporary Property</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Temporary Property</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTemporaryProperty(TemporaryProperty object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Structural Feature</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Structural Feature</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStructuralFeature(StructuralFeature object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Reference</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Reference</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseReference(Reference object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Property</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Property</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProperty(Property object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Typed Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Typed Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTypedElement(TypedElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Gate</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Gate</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseGate(Gate object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Literal Boolean</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Literal Boolean</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLiteralBoolean(LiteralBoolean object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Classifier Mapping</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Classifier Mapping</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseClassifierMapping(ClassifierMapping object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Attribute Mapping</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Attribute Mapping</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAttributeMapping(AttributeMapping object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Operation Mapping</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Operation Mapping</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOperationMapping(OperationMapping object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Parameter Mapping</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Parameter Mapping</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseParameterMapping(ParameterMapping object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>State View</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>State View</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStateView(StateView object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>State Machine</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>State Machine</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStateMachine(StateMachine object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Transition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Transition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTransition(Transition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>State</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>State</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseState(State object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Advice</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Advice</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAdvice(Advice object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Global Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Global Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseGlobalScope(GlobalScope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Per Join Point Scope</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Per Join Point Scope</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casePerJoinPointScope(PerJoinPointScope object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //Ram_avSwitch
